home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 010 / designer.arc / DEMO.BAS (.txt) next >
Encoding:
GW-BASIC  |  1980-01-01  |  6.4 KB  |  155 lines

  1. 10000  REM *******************************************************************
  2. 10010  REM **         DEMO - Program to Demonstrate Animation               **
  3. 10020  REM **          Using Files Created by "The Designer"                **
  4. 10030  REM **  Copyright 1983, by Jan B. Young.  Permission is granted to   **
  5. 10040  REM **  all purchasers to copy and modify this program for non-      **
  6. 10050  REM **  commercial uses, providing the copyright notice is retained. **
  7. 10060  REM *******************************************************************
  8. 10070  KEY OFF
  9. 10080  REM *******************************************************************
  10. 10090  REM **              Put Introduction Panel on Screen                 **
  11. 10100  REM *******************************************************************
  12. 10110  SCREEN 1:COLOR 1,1                  'Clear screen
  13. 10120  LOCATE 6,18:PRINT "T H E"
  14. 10130  LOCATE 8,16:PRINT "M O U S E"
  15. 10140  LOCATE 16,8:PRINT "An Animation Demonstration"
  16. 10150  LOCATE 18,6:PRINT "Copyright 1983 by Jan B. Young"
  17. 10160  LOCATE 23,8:PRINT "Press Any Key to Continue"
  18. 10170  X$=INPUT$(1)
  19. 10180  REM *******************************************************************
  20. 10190  REM **              Get Sprite and Load in Matrix                    **
  21. 10200  REM *******************************************************************
  22. 10210  OPEN "A:MOUSE.SPR" FOR INPUT AS #1
  23. 10220  INPUT #1,RES,PAL,ARR,WID,HGHT        'Defines parameters for the mouse
  24. 10230  DIM MOUSE(ARR)
  25. 10240  FOR I=0 TO ARR                       'Load mouse into array
  26. 10250  INPUT#1,J(0),J(1),J(2),J(3)
  27. 10260  P=VARPTR(MOUSE(I))
  28. 10270  FOR N=0 TO 3
  29. 10280  POKE P+N,J(N)
  30. 10290  NEXT N
  31. 10300  NEXT I
  32. 10310  CLOSE #1
  33. 10320  REM *******************************************************************
  34. 10330  REM **               Put background on Screen                        **
  35. 10340  REM *******************************************************************
  36. 10350  OPEN "A:MAZE.RES" FOR INPUT AS #1
  37. 10360  INPUT #1,RES,BAK,PAL                 'Defines parameters for maze
  38. 10370  CLOSE #1
  39. 10380  SCREEN RES:COLOR BAK,PAL:CLS         'Clear screen
  40. 10390  DEF SEG= &HB800                      'Locate screen buffer
  41. 10400  BLOAD "A:MAZE",0                     'Put maze on screen
  42. 10410  DEF SEG
  43. 10420  REM *******************************************************************
  44. 10430  REM **                      Animate                                  **
  45. 10440  REM *******************************************************************
  46. 10450  HPOS=7:VPOS=4:HNEW=7:VNEW=4:DIR$="E"              'Initial values
  47. 10460  T = VAL(MID$(TIME$,4,2))*100+VAL(MID$(TIME$,7,2))
  48. 10470  RANDOMIZE T
  49. 10480  PUT (HPOS,VPOS),MOUSE                             'Put mouse on screen
  50. 10490  REM LINE (HPOS-5,VPOS-3)-(HPOS+18,VPOS+14),1,B    'Debugging only
  51. 10500  GOSUB 11250                               'Determines freedom to move
  52. 10510  REM LOCATE 20,20:PRINT NORTH:LOCATE 21,21:PRINT EAST:LOCATE 22,20:PRINT SOUTH:LOCATE 21,19:PRINT WEST:LOCATE 21,30:PRINT DIR$  'Delete REM for debugging
  53. 10520  IF DIR$ = "E" THEN GOTO 10570
  54. 10530  IF DIR$ = "N" THEN GOTO 10720           'DIR$ is direction of motion
  55. 10540  IF DIR$ = "S" THEN GOTO 10860
  56. 10550  IF DIR$ = "W" THEN GOTO 11020
  57. 10560  REM *** Now going east - logic selects next move ***
  58. 10570  IF EAST=1 THEN GOTO 10630
  59. 10580  IF SOUTH=1 THEN GOTO 10610         'Value East=1 means OK to go east
  60. 10590  IF NORTH=1 THEN GOTO 11180        'Value East=0 means path east is blocked
  61. 10600  GOTO 11170                        'See GOTO line for direction chosen
  62. 10610  IF NORTH=0 THEN 11200
  63. 10620  I=RND:IF I>0.5 THEN 11200 ELSE 11180
  64. 10630  IF SOUTH=1 THEN GOTO 10670
  65. 10640  IF NORTH=1 THEN GOTO 10660
  66. 10650  GOTO 11190
  67. 10660  I=RND:IF I>0.4 THEN 11190 ELSE 11180
  68. 10670  IF NORTH=1 THEN GOTO 10690
  69. 10680  I=RND:IF I>0.4 THEN 11190 ELSE 11200
  70. 10690  I=RND:IF I>0.7 THEN 11200
  71. 10700  IF I>0.4 THEN 11180 ELSE 11190
  72. 10710  REM *** Now going north- logic selects next move ***
  73. 10720  IF NORTH=1 THEN GOTO 10780
  74. 10730  IF WEST=1 THEN GOTO 10760
  75. 10740  IF EAST=1 THEN GOTO 11190
  76. 10750  GOTO 11200
  77. 10760  IF EAST=0 THEN 11170
  78. 10770  I=RND:IF I>0.5 THEN 11190 ELSE 11170
  79. 10780  IF WEST=1 THEN GOTO 10820
  80. 10790  IF EAST=1 THEN GOTO 10810
  81. 10800  GOTO 11180
  82. 10810  I=RND:IF I>0.4 THEN 11180 ELSE 11190
  83. 10820  IF EAST=1 THEN GOTO 10840
  84. 10830  IF I>0.4 THEN 11180 ELSE 11170
  85. 10840  I=RND:IF I>0.6 THEN 11180
  86. 10850  I=RND:IF I>0.3 THEN 11170 ELSE 11190
  87. 10860  REM *** Now going south- logic selects next move ***
  88. 10870  IF SOUTH=1 THEN GOTO 10940
  89. 10880  IF WEST=1 THEN GOTO 10910
  90. 10890  IF EAST=1 THEN GOTO 11190
  91. 10900  GOTO 11180
  92. 10910  IF EAST=0 THEN 11170
  93. 10920  I=RND:IF I>0.5 THEN 11170 ELSE 11190
  94. 10930  IF I>0.2 THEN 11170 ELSE 11180
  95. 10940  IF WEST=1 THEN GOTO 10980
  96. 10950  IF EAST=1 THEN GOTO 10970
  97. 10960  GOTO 11200
  98. 10970  I=RND:IF I>0.4 THEN 11200 ELSE 11190
  99. 10980  IF EAST=1 THEN GOTO 11000
  100. 10990  I=RND:IF I>0.4 THEN 11200 ELSE 11170
  101. 11000  I=RND:IF I>0.7 THEN 11190
  102. 11010  IF I>0.4 THEN 11170 ELSE 11200
  103. 11020  REM *** Now going west- logic selects next move ***
  104. 11030  IF WEST=1 THEN GOTO 11090
  105. 11040  IF NORTH=1 THEN GOTO 11070
  106. 11050  IF SOUTH=1 THEN GOTO 11200
  107. 11060  GOTO 11180
  108. 11070  IF SOUTH=0 THEN 11180
  109. 11080  I=RND:IF I>0.5 THEN 11200 ELSE 11180
  110. 11090  IF NORTH=1 THEN GOTO 11130
  111. 11100  IF SOUTH=1 THEN GOTO 11120
  112. 11110  GOTO 11170
  113. 11120  I=RND:IF I>0.4 THEN 11170 ELSE 11200
  114. 11130  IF SOUTH=1 THEN GOTO 11150
  115. 11140  I=RND:IF I>0.4 THEN 11170 ELSE 11180
  116. 11150  I=RND:IF I>0.7 THEN 11180
  117. 11160  IF I>0.4 THEN 11200 ELSE 11170
  118. 11170  DIR$="W":HNEW=HNEW-1:GOTO 11210     '4 statements calculate next position
  119. 11180  DIR$="N":VNEW=VPOS-1:GOTO 11210
  120. 11190  DIR$="E":HNEW=HPOS+1:GOTO 11210
  121. 11200  DIR$="S":VNEW=VPOS+1:GOTO 11210
  122. 11210  PUT (HPOS,VPOS),MOUSE              'remove mouse from old position
  123. 11220  REM LINE (HPOS-5,VPOS-3)-(HPOS+18,VPOS+14),0,B   'Debugging only
  124. 11230  HPOS=HNEW:VPOS=VNEW                'Change position
  125. 11240  GOTO 10480                           'Go back to start
  126. 11250  REM *******************************************************************
  127. 11260  REM **                 "Feel" for open paths                         **
  128. 11270  REM ** Note: Mouse occupies a box extending horizontally from        **
  129. 11280  REM ** HPOS-6 to HPOS+19 and vertically from VPOS-4 to VPOS+15       **
  130. 11290  REM *******************************************************************
  131. 11300  WHILE DIR$="E"
  132. 11310     IF POINT(HPOS+18,VPOS-4)=0 AND POINT(HPOS+19,VPOS-4)<>0                            THEN NORTH=1 ELSE NORTH=0
  133. 11320     IF POINT(HPOS+18,VPOS+15)=0 AND POINT(HPOS+19,VPOS+15)<>0                         THEN SOUTH=1 ELSE SOUTH=0
  134. 11330     IF POINT(HPOS+19,VPOS+6)=0 THEN EAST=1 ELSE EAST=0
  135. 11340     RETURN
  136. 11350  WEND
  137. 11360  WHILE DIR$="W"
  138. 11370     IF POINT(HPOS-5,VPOS-4)=0 AND POINT(HPOS-6,VPOS-4)<>0                              THEN NORTH=1 ELSE NORTH=0
  139. 11380     IF POINT(HPOS-5,VPOS+15)=0 AND POINT(HPOS-6,VPOS+15)<>0                            THEN SOUTH=1 ELSE SOUTH=0
  140. 11390     IF POINT(HPOS-6,VPOS+6)=0 THEN WEST=1 ELSE WEST=0
  141. 11400     RETURN
  142. 11410  WEND
  143. 11420  WHILE DIR$="N"
  144. 11430     IF POINT(HPOS-6,VPOS-3)=0 AND POINT(HPOS-6,VPOS-4)<>0                              THEN WEST=1 ELSE WEST=0
  145. 11440     IF POINT(HPOS+19,VPOS-3)=0 AND POINT(HPOS+19,VPOS-4)<>0                            THEN EAST=1 ELSE EAST=0
  146. 11450     IF POINT (HPOS+6,VPOS-4)=0 THEN NORTH = 1 ELSE NORTH = 0
  147. 11460     RETURN
  148. 11470  WEND
  149. 11480  WHILE DIR$="S"
  150. 11490     IF POINT(HPOS-6,VPOS+14)=0 AND POINT(HPOS-6,VPOS+15)<>0                            THEN WEST=1 ELSE WEST=0
  151. 11500     IF POINT(HPOS+19,VPOS+14)=0 AND POINT(HPOS+19,VPOS+15)<>0                          THEN EAST=1 ELSE EAST=0
  152. 11510     IF POINT (HPOS+5,VPOS+15)=0 THEN SOUTH=1 ELSE SOUTH=0
  153. 11520     RETURN
  154. 11530  WEND
  155.